import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JFrame;
import javax.swing.border.EmptyBorder;
import java.awt.List;
import java.util.HashMap;


/**
 * @author 
 *
 */
public class VueSaisieArticle extends Vue {
	
	
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private Parution _parution;
	private Auteur[] _auteurs;
	private HashMap<Integer,Auteur> _hashAuteur;
	
	private JButton buttonAjouter;
	private JButton buttonAnnuler;
	private JButton buttonAjouAuteur;
	private JButton buttonSelec;
	private JTextField textNomArt;
	private JTextField textNumPage;
	private List listAuteur;
	
	public VueSaisieArticle(Parution parution,Controleur controleur) {
		super(controleur);
		_parution = parution;

		setTitle("Enregistrement d'un article\r\n");
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
		setBounds(100, 100, 372, 323);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);

		buttonAjouter = new JButton("Ajouter");
		buttonAjouter.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				String titre = textNomArt.getText();
				String pageDebut = textNumPage.getText();
				
				getControleur().nouvArticle(_parution, titre, pageDebut, _auteurs);
				}
		});
		buttonAjouter.setBounds(241, 258, 111, 25);
		contentPane.add(buttonAjouter);
		
		buttonAnnuler = new JButton("Annuler");
		buttonAnnuler.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			getControleur().fermerVue(VueSaisieArticle.this);}
		});
		buttonAnnuler.setBounds(12, 258, 107, 25);
		contentPane.add(buttonAnnuler);
		
		JLabel lblNomArt = new JLabel("Nom de l'article");
		lblNomArt.setBounds(12, 10, 107, 14);
		contentPane.add(lblNomArt);
		
		textNomArt = new JTextField();
		textNomArt.setBounds(131, 7, 194, 20);
		contentPane.add(textNomArt);
		textNomArt.setColumns(10);
		
		JLabel lblNumPage = new JLabel("Numero de page");
		lblNumPage.setBounds(12, 66, 107, 14);
		contentPane.add(lblNumPage);
		
		textNumPage = new JTextField();
		textNumPage.setBounds(131, 63, 86, 20);
		contentPane.add(textNumPage);
		textNumPage.setColumns(5);
		
		JLabel lblAuteur = new JLabel("Auteur");
		lblAuteur.setBounds(12, 106, 61, 15);
		contentPane.add(lblAuteur);
		
		listAuteur = new List();
		listAuteur.setMultipleMode(true);
		listAuteur.setBounds(104, 107, 221, 83);
		contentPane.add(listAuteur);
		
		buttonSelec = new JButton("Selectionner");
		buttonSelec.setBounds(56, 196, 135, 25);
		contentPane.add(buttonSelec);
		buttonSelec.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			_auteurs = getControleur().auteurSelec(listAuteur.getSelectedItems());
			if(_auteurs!=null)
				setEtat(Vue.finale);
			else
				setEtat(Vue.initiale);
			}
		});
		
		buttonAjouAuteur = new JButton("Ajouter Auteur");
		buttonAjouAuteur.setBounds(211, 196, 141, 25);
		contentPane.add(buttonAjouAuteur);
		buttonAjouAuteur.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			getControleur().ajouterAuteur();}
		});		

		rafraichissement();
		
	}	

	public void rafraichissement(){
		listAuteur.clear();
		HashMap<Integer, Auteur> _auteurs;
		_auteurs = getControleur().getAuteurs();		
		for(int i=1; i<=_auteurs.size();i++)			
			listAuteur.add(_auteurs.get(i).getNom()+" "+_auteurs.get(i).getPrenom());				
	}
	
	public void setEtat(int etat) {
		switch (etat) {
		case initiale: {			
			buttonAjouter.setEnabled(false);
			buttonAnnuler.setEnabled(true);	
			buttonSelec.setEnabled(true);
			buttonAjouAuteur.setEnabled(true);
			break;
		}
		case finale: {
			buttonAjouter.setEnabled(true);
			buttonAnnuler.setEnabled(true);	
			buttonSelec.setEnabled(false);
			buttonAjouAuteur.setEnabled(false);
			break;
		}
	
		}
	}
}
